<!--
    -  Copyright (c) 2018-2025, haohanwork.com All rights reserved.
  -->
<template>
    <div class="execution">
        <basic-container>
            <avue-crud
                    ref="crud"
                    :page.sync="page"
                    :data="tableData"
                    :permission="permissionList"
                    :table-loading="tableLoading"
                    :option="tableOption"
                    @on-load="getList"
                    @search-change="searchChange"
                    @refresh-change="refreshChange"
                    @row-update="handleUpdate"
                    @row-save="handleSave"
                    @row-del="rowDel"
            >
                <template slot="menuRight">
                    <el-button type="primary" icon="el-icon-edit" size="small" @click="jumpToAdd">新增</el-button>
                </template>
                <template slot-scope="scope" slot="menu">
                    <el-button type="text" size="small" plain @click="jumpToDetail(scope.row)">详情</el-button>
                    <el-button type="text" size="small" plain @click="jumpToRedact(scope.row)">编辑</el-button>
                    <el-button type="text" size="small" plain @click="jumpToDetail">打印</el-button>
                </template>
            </avue-crud>
        </basic-container>
    </div>
</template>
<!-- 采购退货 -->
<script>
    import {
        fetchList,
    } from "@/api/scm/warehouse/enter_warehouse";
    import {tableOption} from "@/const/crud/scm/warehouse/enter_warehouse";
    import {mapGetters} from "vuex";

    export default {
        name: "order",
        data() {
            return {
                tableData: [],
                page: {
                    total: 0, // 总页数
                    currentPage: 1, // 当前页数
                    pageSize: 20 // 每页显示多少条
                },
                tableLoading: false,
                tableOption: tableOption
            };
        },
        computed: {
            ...mapGetters(["permissions"]),
            permissionList() {
                return {
                    addBtn: this.vaildData(
                        this.permissions.purchase_purchasetask_add,
                        true
                    ),
                    delBtn: this.vaildData(
                        this.permissions.purchase_purchasetask_del,
                        true
                    ),
                    editBtn: this.vaildData(
                        this.permissions.purchase_purchasetask_edit,
                        true
                    )
                };
            }
        },
        methods: {
            getList(page, params) {
                this.tableLoading = true
                fetchList(Object.assign({
                    current: page.currentPage,
                    size: page.pageSize
                }, params)).then(response => {
                    this.tableData = response.data.data.records;
                    this.page.total = response.data.data.total;
                    this.tableLoading = false
                })
            },
            rowDel: function (row, index) {
                var _this = this;
                this.$confirm("是否确认删除ID为" + row.id, "提示", {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning"
                })
                    .then(function () {
                        return delObj(row.id);
                    })
                    .then(data => {
                        _this.tableData.splice(index, 1);
                        _this.$message({
                            showClose: true,
                            message: "删除成功",
                            type: "success"
                        });
                        this.getList(this.page);
                    })
                    .catch(function (err) {
                    });
            },
            /**
             * @title 数据更新
             * @param row 为当前的数据
             * @param index 为当前更新数据的行数
             * @param done 为表单关闭函数
             *
             **/
            handleUpdate: function (row, index, done) {
                putObj(row).then(data => {
                    this.tableData.splice(index, 1, Object.assign({}, row));
                    this.$message({
                        showClose: true,
                        message: "修改成功",
                        type: "success"
                    });
                    done();
                    this.getList(this.page);
                });
            },
            /**
             * @title 数据添加
             * @param row 为当前的数据
             * @param done 为表单关闭函数
             *
             **/
            handleSave: function (row, done) {
                addObj(row).then(data => {
                    this.tableData.push(Object.assign({}, row));
                    this.$message({
                        showClose: true,
                        message: "添加成功",
                        type: "success"
                    });
                    done();
                    this.getList(this.page);
                });
            },
            /**
             * 搜索回调
             */
            searchChange(form, done) {
                this.getList(this.page, form);
                done();
            },
            /**
             * 刷新回调
             */
            refreshChange(info) {
    this.getList(this.page, this.filterForm(info.searchForm));
},
            /**
             * 页面跳转
             */
            jumpToAdd() {
                this.$router.push({path: "/enter_warehouse/increased"});
            },
            jumpToDetail(row) {
                let query = {
                    enterWarehouse: row,
                };
                this.$router.push({path: "/enter_warehouse/detail", query: query});
            },
            jumpToRedact(row) {
                let query = {
                    id: row.id,
                    enterWarehouseSn:row
                };
                this.$router.push({path: "/enter_warehouse/redact", query: query});
            }
        }
    };
</script>

<style lang="scss" scoped>
</style>
